home *** CD-ROM | disk | FTP | other *** search
/ Tech Arsenal 1 / Tech Arsenal (Arsenal Computer).ISO / tek-06 / fileow.zip / FILEOWN.C < prev    next >
C/C++ Source or Header  |  1991-03-07  |  5KB  |  190 lines

  1. /********************************
  2.  **                            **
  3.  ** Fileown.c --by John Adkins **
  4.  ** v1.00                      **
  5.  **----------------------------**
  6.  **                            **
  7.  ** Examines files in the cur- **
  8.  ** rent directory and sets    **
  9.  ** the owner to the current   **
  10.  ** user if no owner is already**
  11.  ** set.                       **
  12.  **                            **
  13.  **----------------------------**
  14.  **                            **
  15.  **    Copyright (C) 1991      **
  16.  **    Illinois Department     **
  17.  **    of Revenue              **
  18.  **                            **
  19.  **    All rights reserved.    **
  20.  **                            **
  21.  **----------------------------**
  22.  **                            **
  23.  ** Written in Turbo C++ v1.0  **
  24.  ** and the Novell C API libs. **
  25.  **                            **
  26.  ********************************/
  27.  
  28.  
  29. /********************************
  30.  *******  INCLUDES  *************
  31.  ********************************/
  32.  
  33. #include <stdio.h>
  34. #include <string.h>
  35. #include <dir.h>
  36. #include <dos.h>
  37.  
  38.  
  39. /********************************
  40.  *******  NOVELL API  ***********
  41.  ********************************/
  42.  
  43. #include <nit.h>
  44. #include <niterror.h>
  45.  
  46.  
  47. /********************************
  48.  *******  DEFINES  **************
  49.  ********************************/
  50.  
  51. #define  ID_SIZE                    48
  52. #define  FILENAME_SIZE    64
  53.  
  54.  
  55. /********************************
  56.  *******  TYPEDEFS  *************
  57.  ********************************/
  58.  
  59.  
  60.  
  61. /********************************
  62.  *******  GLOBALS  **************
  63.  ********************************/
  64.  
  65.  
  66.  
  67. /********************************
  68.  *******  PROTOTYPES  ***********
  69.  ********************************/
  70.  
  71. void main(int,char **);
  72. void GetLoginName(char *,long *);
  73.  
  74.  
  75. /********************************
  76.  *******  ROUTINES  *************
  77.  ********************************/
  78.  
  79.  
  80. void GetLoginName(loginname,objectID)
  81.     char              *loginname;
  82.     long                            *objectID;
  83. {
  84.     WORD              connect,connectID;
  85.     WORD              objtype;
  86.     char              loggedin[7];
  87.  
  88.     connect=GetConnectionNumber();
  89.     GetConnectionInformation(connect,loginname,&objtype,objectID,loggedin);
  90.     return;
  91. }
  92.  
  93.  
  94. void main(argc,argv)
  95.     int                                argc;
  96.     char                            *argv[];
  97. {
  98.     int               error;
  99.     int                                curdrv;
  100.     BYTE                            dh;
  101.     int                                seq;
  102.     char                            fname[FILENAME_SIZE+1];
  103.     char                            userid[ID_SIZE+1];
  104.     long                            userobj;
  105.     BYTE                            fattr,extfattr;
  106.     long                            fsize;
  107.     char                            fcreatedte[2];
  108.     char                            flastacc[2];
  109.     char                            flastupd[4];
  110.     char                            flastarc[4];
  111.     long                            fownerid;
  112.     char                            owner[ID_SIZE];
  113.     WORD                            ownertype;
  114.     char                            fpath[FILENAME_SIZE+1];
  115.     struct ffblk            ffblk;
  116.  
  117.     puts("\nFileOwn v1.00\nCopyright (C) 1991, Illinois Department of Revenue");
  118.     puts("All rights reserved.\n");
  119.     error=0;
  120.     GetLoginName(userid,&userobj);
  121.     curdrv=getdisk();
  122.     dh=GetDirectoryHandle(curdrv);
  123.     if(dh)
  124.     {
  125.         if(getcwd(fpath,FILENAME_SIZE))
  126.         {
  127.             printf("\nScanning directory %s:\n\n",fpath);
  128.             error=findfirst("*.*",&ffblk,0);
  129.             while(!error)
  130.             {
  131.         seq=-1;      /* -1 is a magic number which means "find first" */
  132.         fownerid=0L; /* this line is just a precaution */
  133.                 error=ScanFileInformation(dh,ffblk.ff_name,0x00,&seq,fname,&fattr,
  134.                                                                     &extfattr,&fsize,fcreatedte,flastacc,flastupd,
  135.                                                                     flastarc,&fownerid);
  136.                 if(error)
  137.                 {
  138.                     fprintf(stderr,"Error scanning file info for %s.\n",ffblk.ff_name);
  139.                     continue;
  140.                 }
  141.                 error=GetBinderyObjectName(fownerid,owner,&ownertype);
  142.                 if(error)
  143.                 {
  144.                     if(error==NO_SUCH_OBJECT)
  145.                     {
  146.                         printf("%s owner id=0x%LX not found",ffblk.ff_name,fownerid);
  147.                         if(argc==1)
  148.                         {
  149.                             printf(", setting %s as new owner.\n",userid);
  150.                             error=SetFileInformation(dh,ffblk.ff_name,0x00,fattr,
  151.                                                                             extfattr,fcreatedte,flastacc,flastupd,
  152.                                                                             flastarc,userobj);
  153.                             if(error!=SUCCESSFUL)
  154.                             {
  155.                                 fprintf(stderr,"Unexpected error (0x%X) setting file info.\n",error);
  156.                                 fprintf(stderr,"File=%s, new owner=%s (0x%LX)\n",ffblk.ff_name,userid,userobj);
  157.                                 continue;
  158.                             }
  159.                         }
  160.                         else
  161.                         {
  162.                             printf(", no changes made.\n");
  163.                         }
  164.                     }
  165.                     else
  166.                     {
  167.                         error=20;
  168.                         continue;
  169.                     }
  170.                 }
  171.                 else
  172.                 {
  173.                     printf("%s owned by %s.\n",fname,owner);
  174.                 }
  175.                 error=findnext(&ffblk);
  176.             }
  177.         }
  178.         else
  179.         {
  180.             fprintf(stderr,"Unable to get dir path for drive #%d\n",curdrv);
  181.         }
  182.     }
  183.     else
  184.     {
  185.         error=20;
  186.         fprintf(stderr,"Unable to get dir handle for drive #%d\n",curdrv);
  187.     }
  188.     exit(error);
  189. }
  190.